Librerías empleadas

library(readr)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(plotly)
## 
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(sf)
## Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.3.1; sf_use_s2() is TRUE
library(pxR)
## Warning: package 'pxR' was built under R version 4.4.2
## Cargando paquete requerido: stringr
## Cargando paquete requerido: reshape2
## Warning: package 'reshape2' was built under R version 4.4.2
## Cargando paquete requerido: RJSONIO
## Cargando paquete requerido: plyr
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
## 
## Adjuntando el paquete: 'plyr'
## The following objects are masked from 'package:plotly':
## 
##     arrange, mutate, rename, summarise
## The following objects are masked from 'package:dplyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
library(RColorBrewer)
library(httr)
## 
## Adjuntando el paquete: 'httr'
## The following object is masked from 'package:plotly':
## 
##     config
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ plyr::arrange()   masks plotly::arrange(), dplyr::arrange()
## ✖ purrr::compact()  masks plyr::compact()
## ✖ httr::config()    masks plotly::config()
## ✖ plyr::count()     masks dplyr::count()
## ✖ plyr::desc()      masks dplyr::desc()
## ✖ plyr::failwith()  masks dplyr::failwith()
## ✖ plotly::filter()  masks dplyr::filter(), stats::filter()
## ✖ plyr::id()        masks dplyr::id()
## ✖ dplyr::lag()      masks stats::lag()
## ✖ plyr::mutate()    masks plotly::mutate(), dplyr::mutate()
## ✖ plyr::rename()    masks plotly::rename(), dplyr::rename()
## ✖ plyr::summarise() masks plotly::summarise(), dplyr::summarise()
## ✖ plyr::summarize() masks dplyr::summarize()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(jsonlite)
## 
## Adjuntando el paquete: 'jsonlite'
## 
## The following object is masked from 'package:purrr':
## 
##     flatten
## 
## The following objects are masked from 'package:RJSONIO':
## 
##     fromJSON, toJSON
library(readxl)
library(rjson)
## 
## Adjuntando el paquete: 'rjson'
## 
## The following objects are masked from 'package:jsonlite':
## 
##     fromJSON, toJSON
## 
## The following objects are masked from 'package:RJSONIO':
## 
##     fromJSON, toJSON
library(tidyr)

Cargar environment

load("OUTPUT/enviroment.RData")

Pregunta 1: Consumo de antibióticos en España

Determinar el consumo de antibióticos por comunidades autónomas, diferenciando entre recetado y no recetado, para identificar tendencias de uso.

tipo_ccaa_consumo_o_no <- read_delim("INPUT/DATA/datos_ccaa/tipo_ccaa_consumo_o_no.csv", 
                                     delim = ";", escape_double = FALSE, trim_ws = TRUE)
## Rows: 3420 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (6): Sexo, Total Nacional, Comunidades y Ciudades Autónomas, Tipo de med...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
antibioticos <- tipo_ccaa_consumo_o_no %>% 
  filter(`Tipo de medicamento` == "Antibióticos")

antibioticos <- tipo_ccaa_consumo_o_no[tipo_ccaa_consumo_o_no$`Tipo de medicamento` == "Antibióticos" & tipo_ccaa_consumo_o_no$`Sexo` == "Ambos sexos",]

# Esta tabla enseña que el 3,54% de la población española en la última encuesta reconoce 
# haber consumido antibióticos en las últimas 2 semanas (En el año 2021)


# Comunidad que más consume

antibioticos_si <- antibioticos[antibioticos$`Sí o no` == "Sí",]

antibioticos_si$Total <- gsub(",", ".", antibioticos_si$Total)

antibioticos_si$Total <- gsub(" ", "", antibioticos_si$Total)

antibioticos_si$Total <- as.numeric(antibioticos_si$Total)

# Revisa si hay NA después de la conversión
sum(is.na(antibioticos_si$Total))  # Muestra el número de NAs
## [1] 0
consumo_comunidades <- antibioticos_si %>%
  group_by(`Comunidades y Ciudades Autónomas`) %>%
  arrange(desc(Total))

consumo_comunidades
## # A tibble: 20 × 6
## # Groups:   Comunidades y Ciudades Autónomas [20]
##    Sexo  `Total Nacional` Comunidades y Ciudad…¹ `Tipo de medicamento` `Sí o no`
##    <chr> <chr>            <chr>                  <chr>                 <chr>    
##  1 Ambo… Total            Madrid (Comunidad de)  Antibióticos          Sí       
##  2 Ambo… Total            Rioja (La)             Antibióticos          Sí       
##  3 Ambo… Total            Castilla y León        Antibióticos          Sí       
##  4 Ambo… Total            Comunitat Valenciana   Antibióticos          Sí       
##  5 Ambo… Total            País Vasco             Antibióticos          Sí       
##  6 Ambo… Total            Canarias               Antibióticos          Sí       
##  7 Ambo… Total            <NA>                   Antibióticos          Sí       
##  8 Ambo… Total            Galicia                Antibióticos          Sí       
##  9 Ambo… Total            Navarra (Comunidad Fo… Antibióticos          Sí       
## 10 Ambo… Total            Andalucía              Antibióticos          Sí       
## 11 Ambo… Total            Cataluña               Antibióticos          Sí       
## 12 Ambo… Total            Aragón                 Antibióticos          Sí       
## 13 Ambo… Total            Castilla-La Mancha     Antibióticos          Sí       
## 14 Ambo… Total            Cantabria              Antibióticos          Sí       
## 15 Ambo… Total            Murcia (Región de)     Antibióticos          Sí       
## 16 Ambo… Total            Extremadura            Antibióticos          Sí       
## 17 Ambo… Total            Asturias (Principado … Antibióticos          Sí       
## 18 Ambo… Total            Melilla (Ciudad Autón… Antibióticos          Sí       
## 19 Ambo… Total            Ceuta (Ciudad Autónom… Antibióticos          Sí       
## 20 Ambo… Total            Balears (Illes)        Antibióticos          Sí       
## # ℹ abbreviated name: ¹​`Comunidades y Ciudades Autónomas`
## # ℹ 1 more variable: Total <dbl>
c_c_final <- consumo_comunidades %>%
  mutate(`Comunidades y Ciudades Autónomas` = ifelse(is.na(`Comunidades y Ciudades Autónomas`), "Total País", `Comunidades y Ciudades Autónomas`))
c_c_final
## # A tibble: 20 × 6
## # Groups:   Comunidades y Ciudades Autónomas [20]
##    Sexo  `Total Nacional` Comunidades y Ciudad…¹ `Tipo de medicamento` `Sí o no`
##    <chr> <chr>            <chr>                  <chr>                 <chr>    
##  1 Ambo… Total            Madrid (Comunidad de)  Antibióticos          Sí       
##  2 Ambo… Total            Rioja (La)             Antibióticos          Sí       
##  3 Ambo… Total            Castilla y León        Antibióticos          Sí       
##  4 Ambo… Total            Comunitat Valenciana   Antibióticos          Sí       
##  5 Ambo… Total            País Vasco             Antibióticos          Sí       
##  6 Ambo… Total            Canarias               Antibióticos          Sí       
##  7 Ambo… Total            Total País             Antibióticos          Sí       
##  8 Ambo… Total            Galicia                Antibióticos          Sí       
##  9 Ambo… Total            Navarra (Comunidad Fo… Antibióticos          Sí       
## 10 Ambo… Total            Andalucía              Antibióticos          Sí       
## 11 Ambo… Total            Cataluña               Antibióticos          Sí       
## 12 Ambo… Total            Aragón                 Antibióticos          Sí       
## 13 Ambo… Total            Castilla-La Mancha     Antibióticos          Sí       
## 14 Ambo… Total            Cantabria              Antibióticos          Sí       
## 15 Ambo… Total            Murcia (Región de)     Antibióticos          Sí       
## 16 Ambo… Total            Extremadura            Antibióticos          Sí       
## 17 Ambo… Total            Asturias (Principado … Antibióticos          Sí       
## 18 Ambo… Total            Melilla (Ciudad Autón… Antibióticos          Sí       
## 19 Ambo… Total            Ceuta (Ciudad Autónom… Antibióticos          Sí       
## 20 Ambo… Total            Balears (Illes)        Antibióticos          Sí       
## # ℹ abbreviated name: ¹​`Comunidades y Ciudades Autónomas`
## # ℹ 1 more variable: Total <dbl>

Con estos datos podemos observar de manera gráfica la tendencia de consumo de antibióticos por comunidad autónoma en este país.

ggplot(c_c_final, aes(x = reorder(`Comunidades y Ciudades Autónomas`, -Total), y = Total)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(x = "Comunidades Autónomas", y = "Total Consumo", title = "Consumo de antibióticos por Comunidad Autónoma") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

A continuación estudiaremos si esa cantidad de antibiótico se ha consumido de forma regulada, o por el contrario, no está recetado, favoreciendo así el autoconsumo de los mismos, lo cual se está considerando como una de las posibles causas de la resistencia a los antibióticos

# Leer el archivo .px
archivo_px <- read.px("INPUT/DATA/datos_ccaa/tipo_ccaa_recetado_o_no.px")
df_px <- as.data.frame(archivo_px)



# quedarme solo con los antibióticos
antibiotic <- df_px[df_px[["Tipo.de.medicamento"]] == "Antibióticos" & df_px$`Sexo` == "Ambos sexos", ]


# qué comunidad autónoma se automedica más
antibioticos_sin_receta <- antibiotic[antibiotic$`Recetado` == "No recetado",]

antibioticos_sin_receta <- antibioticos_sin_receta %>%
  filter(value != 0)


consumo_comunidades <- antibioticos_sin_receta %>%
  group_by(`Comunidad.autónoma`) %>%
  arrange(desc(value))

consumo_comunidades
## # A tibble: 9 × 5
## # Groups:   Comunidad.autónoma [9]
##   Recetado    Tipo.de.medicamento Comunidad.autónoma           Sexo        value
##   <fct>       <fct>               <fct>                        <fct>       <dbl>
## 1 No recetado Antibióticos        País Vasco                   Ambos sexos  7.49
## 2 No recetado Antibióticos        Asturias (Principado de)     Ambos sexos  6.01
## 3 No recetado Antibióticos        Navarra (Comunidad Foral de) Ambos sexos  4.18
## 4 No recetado Antibióticos        Madrid (Comunidad de)        Ambos sexos  3.24
## 5 No recetado Antibióticos        Andalucía                    Ambos sexos  2.51
## 6 No recetado Antibióticos        Comunitat Valenciana         Ambos sexos  2.3 
## 7 No recetado Antibióticos        Total                        Ambos sexos  2.11
## 8 No recetado Antibióticos        Canarias                     Ambos sexos  2.04
## 9 No recetado Antibióticos        Castilla y León              Ambos sexos  1.74
ggplot(consumo_comunidades, aes(x = "", y = value, fill = `Comunidad.autónoma`)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  labs(title = "Consumo de Antibióticos por Comunidad Autónoma",
       fill = "Comunidad Autónoma") +
  theme_void()  # Elimina el fondo y los ejes

Pregunta 2: Relación entre PIB y resistencia a antibióticos en la UE

Analizar si existe una relación significativa entre el Producto Interno Bruto de los países de la Unión Europea y los niveles de resistencia a antibióticos.

pibPP <- read_table("INPUT/DATA/datos_pib.tsv")
## Warning: Missing column names filled in: 'X14' [14]
## 
## ── Column specification ────────────────────────────────────────────────────────
## cols(
##   `freq,na_item,ppp_cat,geo\TIME_PERIOD` = col_character(),
##   `2012` = col_double(),
##   `2013` = col_double(),
##   `2014` = col_double(),
##   `2015` = col_double(),
##   `2016` = col_double(),
##   `2017` = col_double(),
##   `2018` = col_double(),
##   `2019` = col_double(),
##   `2020` = col_double(),
##   `2021` = col_double(),
##   `2022` = col_double(),
##   `2023` = col_double(),
##   X14 = col_logical()
## )
# Cambio de nombre columna
colnames(pibPP)[1] <- "pais"

# Nos quedamos con las últimas letras
pibPP$pais <- substr(pibPP$pais, nchar(pibPP$pais) - 1, nchar(pibPP$pais))

lista_pais <- list("BE", "BG", "CZ", "DK", "DE", "EE", "IE", "EL", "ES", "FR", "HR", "IT", "CY", "LV", "LT", "LU", "HU", "MT", "NL",
               "AT", "PL", "PT", "RO", "SI", "SK", "FI", "SE")

# nos quedamos solo con los países de la UE


pib <- pibPP %>% filter(pais %in% unlist(lista_pais))


# quitar la columna nula

pib <- pib[, colSums(is.na(pib)) < nrow(pib)]
pib
## # A tibble: 27 × 13
##    pais  `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020` `2021`
##    <chr>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 AT       133    133    132    131    130    127    128    126    125    122
##  2 BE       121    121    121    121    120    118    118    118    118    120
##  3 BG        47     46     47     48     49     50     52     53     55     57
##  4 CY        91     84     81     83     88     90     91     93     91     94
##  5 CZ        84     86     88     89     89     91     92     93     93     92
##  6 DE       124    125    127    124    125    124    124    121    123    120
##  7 DK       128    130    129    128    128    130    129    126    133    135
##  8 EE        74     76     78     76     77     79     82     83     85     86
##  9 EL        71     72     72     70     68     67     66     66     62     63
## 10 ES        91     90     90     91     92     93     91     91     83     84
## # ℹ 17 more rows
## # ℹ 2 more variables: `2022` <dbl>, `2023` <dbl>
pib_2022 <- pib %>% select(pais, `2022`)


# ggplot del pib en el 2022 (primero lo ponemos en descendente)

pib_2022_desc <- pib_2022 %>% arrange(desc(`2022`))


# sustituir las etiquetas de los países

pib_2022_desc <- pib_2022_desc %>%
  mutate(pais = case_when(
    pais == "SK" ~ "Eslovaquia",
    pais == "SI" ~ "Slovenia",
    pais == "EE" ~ "Estonia",
    pais == "MT" ~ "Malta",
    pais == "LV" ~ "Latvia",
    pais == "HR" ~ "Croatia",
    pais == "EL" ~ "Greece",
    pais == "BG" ~ "Bulgaria",
    TRUE ~ pais # Mantiene los nombres que no están en la lista
  ))

Tras el tratamiento de estos datos se puede ver de manera gráfica la comparativa entre los países.

grafico_pib <- ggplot(pib_2022_desc, aes(x = reorder(pais, -`2022`), y = `2022`)) +
  geom_bar(stat = "identity", fill = "gold") +
  labs(x = "País", y = "Valor en 2022", title = "PIB por País en 2022") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor legibilidad

grafico_pib

Una vez observada la primera variable, generamos los datos del valor medio de la resistencia a antimicrobianos en los países europeos para comprobar si existe una relación o, efectivamente no tiene que ver.

Incidencia_enfermedades <-  read_csv("INPUT/DATA/ECDC_encuesta_AMR_incidencia_enfermedades.csv")

incidencia_2022MF <- Incidencia_enfermedades %>%
  filter(Time == 2022) %>%
  filter(Category == 'Male' | Category == 'Female')

incidencia_2022MF$Value <- as.numeric(incidencia_2022MF$Value)

media_poblacion <- incidencia_2022MF %>%
  select(-Unit, -HealthTopic, -Time, -Distribution) %>%
  mutate(grupo = substr(Population, 1, 3))

otra <- media_poblacion %>%
  select(-Category, -CategoryIndex, -Population) %>%
  arrange(RegionCode, grupo) %>%    
  group_by(RegionCode, grupo) %>%   
  summarise(mean_value = mean(Value, na.rm = TRUE))  

otra$mean_value[is.nan(otra$mean_value)] <- 0

media_region <- otra %>%
  group_by(RegionCode) %>%
  summarise(mean_value_region = mean(mean_value, na.rm = TRUE))  


boxplot <- ggplot(otra, aes(x = grupo, y = mean_value)) +
  geom_boxplot() +
  labs(title = "Distribution of Mean Incidence by Bacteria Group",
       x = "Bacteria Group", y = "Mean Incidence") +
  theme_minimal()


incidencia_keyed <- highlight_key(otra, ~RegionCode)

scatter_plot <- ggplot(incidencia_keyed, aes(x = grupo, y = mean_value, color = RegionCode, text = paste("País:", RegionCode))) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  labs(title = "Population vs Mean Incidence Value by Region",
       x = "Population", y = "Mean Incidence Value") +
  theme_classic()

interactive_scatter_plot <- ggplotly(scatter_plot, tooltip = "text") %>%
  highlight(on = "plotly_click", off = "plotly_doubleclick", color = "red", opacityDim = 0.2)

interactive_scatter_plot

Este código cargado en el entorno, es capaz de generar gráficos que permitan ver la incidencia de las distintas bacterias por cada país y para ver cuál es la bacteria que más afecta en toda la Unión Europea.

boxplot_in <- ggplot(otra, aes(x = grupo, y = mean_value)) +
  geom_boxplot() +
  labs(title = "Distribution of Mean Incidence by Bacteria Group",
       x = "Bacteria Group", y = "Mean Incidence") +
  theme_minimal()
boxplot_in

incidencia_keyed <- highlight_key(otra, ~RegionCode)

scatter_plot <- ggplot(incidencia_keyed, aes(x = grupo, y = mean_value, color = RegionCode, text = paste("País:", RegionCode))) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  labs(title = "Population vs Mean Incidence Value by Region",
       x = "Population", y = "Mean Incidence Value") +
  theme_classic()

interactive_scatter_plot <- ggplotly(scatter_plot, tooltip = "text") %>%
  highlight(on = "plotly_click", off = "plotly_doubleclick", color = "red", opacityDim = 0.2)
## `geom_smooth()` using formula = 'y ~ x'
interactive_scatter_plot

A continuación, se presenta una función que permite abrir una carpeta con numerosos archivos de extensión .json con la misma estructura y leerlos.

library(httr)
library(tidyverse)
library(jsonlite)
library(readxl)
library(rjson)

obtener_nombre<-function(carpeta){
  archivos <- as.list(list.files(path =carpeta))
  lista_nombres<-list()
  for(i in 1:length(archivos)){
    posicion1<-regexpr("_", archivos[[i]])
    posicion2<-regexpr("\\.", archivos[[i]])
    subcadena<-substr(archivos[[i]], posicion1+1, posicion2-1)
    lista_nombres[[i]]<-subcadena
  }
  
  return(lista_nombres)
  
}


obtener_archivo<-function(direccion){
  lista_paises<-obtener_nombre(direccion)
  lista_enlace<-list()
  direccion_archivos<-list()
  
  for(i in lista_paises){
    cada_pais<-paste0("AMR_",i,".json")
    lista_enlace[i]<-cada_pais
  }
  for(i in lista_enlace){
    
    cada_archivo<-paste0(direccion,"/",i)
    direccion_archivos[i]<-cada_archivo
  }
  
  
  for(i in direccion_archivos){
    pais<-fromJSON(file= i)
    enlace<-pais$links$archive
    respuesta_archivo <- GET(enlace)# Hacer la solicitud HTTP para descargar el archivo
    nombre_archivo<-basename(enlace)#Extrae el nombre del archivo de la URL
    
    if (status_code(respuesta_archivo) == 200) {# Verificar si la solicitud fue exitosa (código 200, código estándar HTTP que significa "OK")
      # Guardar el archivo ZIP localmente en formato binario
      writeBin(content(respuesta_archivo, "raw"), nombre_archivo)
      print("Archivo ZIP descargado correctamente.")
      unzip(nombre_archivo, exdir = "carpeta_destino", overwrite = TRUE)
    } else {
      print(paste("Error al descargar el archivo. Código de respuesta:", status_code(respuesta_archivo)))
    }
    
   
  }
  
}
obtener_archivo("INPUT/DATA/Resistecia_Antibioticos_UE")



leer_archivo <- function(carpeta) {
  carpeta_destino <- carpeta
  archivos_zip <- list.files(carpeta_destino, pattern = "\\.zip$", full.names = TRUE)
  
  # Iterar sobre los archivos .zip y descomprimirlos
  for (archivo in archivos_zip) {
    # Descomprimir el archivo .zip
    archivos_extraidos <- unzip(archivo, exdir = carpeta_destino, overwrite = TRUE)
    print(paste("Descomprimido:", archivo))  # Imprimir cada archivo que se descomprime
    
    # Filtrar el archivo .xlsx entre los extraídos
    archivo_xlsx <- archivos_extraidos[grepl("\\.xlsx$", archivos_extraidos)]#Aquí, grepl() busca archivos cuyos nombres terminen con .xlsx 
    
    # Verificar si hay algún archivo .xlsx descomprimido
    if (length(archivo_xlsx) > 0) {
      # Leer el archivo Excel como dataframe
      datos_xlsx <- read_excel(archivo_xlsx[1])  # Leer el primer archivo .xlsx encontrado
      
      # Asignar el dataframe al Global Environment usando el nombre del archivo como variable
      nombre_variable <- make.names(basename(archivo_xlsx[1]))  # Crear un nombre de variable válido
      assign(nombre_variable, datos_xlsx, envir = .GlobalEnv)  # Asignar el dataframe al Global Environment
      
    } 
  }
}


leer_archivo("carpeta_destino")

Juntar los dataframes que tenemos en el enviroment 1. Listar los nombres de todos los dataframes que terminan en “.xlsx” (ajusta si es necesario) 2. Convertir los nombres a una lista de dataframes usando mget() 3. Unir todos los dataframes en uno solo usando bind_rows

nombres_dataframes <- ls(pattern = "_AMR_PUB\\.xlsx$")


lista_dataframes <- mget(nombres_dataframes)

 
df_combinado <- bind_rows(lista_dataframes, .id = "origen")

Cargamos el global enviroment En el que tenemos guardado todos los dataframe de cada pais resultante de la funcion leer_archivo, y el dataframe df_combinado del codigo anterior

Modificación y obtencion del dataframe con los datos seleccionamos las columnas que vamos a necesitar y filtramos en la columna de las bacterias solo las patogénicas.

Cambiamos los nombres de las columnas y lo asignamos al dataframe

paises_UE_df<-df_combinado%>%
  select(rep_Country_name,rep_Country_code,zoonosis_name,matrix_name,totUnitsTested,totUnitsPositive,sampUnitType_name,sampType_name,MIC_name,CUTOFFVALUE)%>%
  mutate(zoonosis_name = sub(".*", "", zoonosis_name))%>% # Extraer solo la primera palabra
  filter(zoonosis_name != "Escherichia coli, non-pathogenic, unspecified")


nuevos_nombres <- c("NombrePais", "Codigo", "zoonosis_name","OrigenMuestra", "TotalMuestras","MuestraPositiva","Tipo_Unidad_Muestra","TipoMuestra","MIC_name","ValorCorte")  # Modifica según el número de columnas

colnames(paises_UE_df) <- nuevos_nombres

Mapa Interactivo de positivos en ganaderia por paises de la UE

library(sf)
library(ggplot2)
library(plotly)
library(dplyr)
library(viridis)
paises_UE <- c(
  "Cyprus", "France", "Lithuania", "Czechia", "Germany", 
  "Estonia", "Latvia", "Sweden", "Finland", "Luxembourg", 
  "Belgium", "Spain", "Denmark", "Romania", "Hungary", 
  "Slovakia", "Poland", "Ireland", "Greece", "Austria", 
  "Italy", "Netherlands", "Croatia", "Slovenia", "Bulgaria", 
  "Portugal", "Malta"
)



mapa_mudo <- st_read("INPUT/DATA/mapaMundi")  
## Reading layer `ne_10m_admin_0_countries' from data source 
##   `C:\Users\deyan\fuentes\seminario_fuentes\INPUT\DATA\mapaMundi' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 258 features and 168 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -180 ymin: -90 xmax: 180 ymax: 83.6341
## Geodetic CRS:  WGS 84
mapa_mundo_europa <- mapa_mudo %>% 
  dplyr::filter(NAME %in% paises_UE)

mapa_mundo_europa <- mapa_mudo %>% dplyr::filter(NAME %in% paises_UE)


positivos_por_ciudad <- paises_UE_df %>%
  dplyr::filter(NombrePais != "United Kingdom (Northern Ireland)")%>%
  group_by(NombrePais) %>%
  dplyr::summarize(total_pruebas = sum(TotalMuestras, na.rm = TRUE),
            total_positivos= sum(MuestraPositiva, na.rm = TRUE)) %>%
  mutate(ratio_positivo = (total_positivos / total_pruebas) * 100)

# Unir datos de positividad al mapa
mapa_mundo_europa$NAME <- as.character(mapa_mundo_europa$NAME)
positivos_por_ciudad$NombrePais <- as.character(positivos_por_ciudad$NombrePais)

# Realizar el join usando las columnas correctas
mapa_mundo_europa <- mapa_mundo_europa %>% 
  left_join(positivos_por_ciudad, by = c("NAME" = "NombrePais"))



mapa <- ggplot(mapa_mundo_europa) +
  geom_sf(aes(fill = ratio_positivo)) +
  scale_fill_viridis_c(option = "plasma", na.value = "gray") +
  labs(title = "Tasa de Positividad por País en Europa",
       fill = "Tasa de Positividad (%)") +
  coord_sf(xlim = c(-30, 50), ylim = c(35, 72), expand = FALSE) +  # Ajustar límites para hacer zoom en Europa
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))


# Convertir el gráfico a interactivo con plotly
mapa_interactivo <- ggplotly(mapa)

mapa_interactivo

Pregunta 3: Consumo y resistencia en sectores específicos en la UE.

Explorar cómo el consumo de antibióticos en sectores como el personal, hospitalario y ganadero se relaciona con los niveles de resistencia a antibióticos en diferentes países de la UE.

Otro de los factores a estudiar era el consumo/administración de este tipo de los medicamentos por parte de los hospitales y la ciudadanía de manera individual, y eso se ve reflejado en los siguientes datos extraídos de la encuesta europea anual.

library(tidyverse)
library(rjson)
library(dplyr)
library(tidyr)
library(ggplot2)


DDD_Europa_Json <- fromJSON(file = "INPUT/DATA/DDD_1000_habitantes_paises.JSON")

DDD_Europa_df <- do.call(rbind, lapply(DDD_Europa_Json, function(x) {
  data.frame(Country = x$Country, 
             DDD_per_1000_inhabitants_per_day = as.numeric(x$`DDD per 1000 inhabitants per day`))
}))

Gráfico de barras de la Dosis de antibióticos media Diaria Definida de los países ordenados de mayor a menor consumo

grafico_DDD <- ggplot(DDD_Europa_df, aes(x = reorder(Country, -DDD_per_1000_inhabitants_per_day), 
                          y = DDD_per_1000_inhabitants_per_day)) +
  geom_bar(stat = "identity", fill = "turquoise") +
  labs(title = "DDD por 1000 habitantes por día en Europa", 
       x = "País", 
       y = "DDD por 1000 habitantes por día") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
grafico_DDD